<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div id="topics">
    <div class="post">
      <h1 class="postTitle">

        <a id="cb_post_title_url" class="postTitle2 vertical-middle"
          href="https://www.cnblogs.com/tian-xie/p/6264104.html">
          <span>SourceTree的基本使用</span>


        </a>

      </h1>
      <div class="clear"></div>
      <div class="postBody">
        <div id="cnblogs_post_description" style="display: none">
          SourceTree的基本使用，冲突的解决，各类分支的使用场景
        </div>
        <div id="cnblogs_post_body" class="blogpost-body blogpost-body-html">
          <h2><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">1. SourceTree是什么</span></h2>
          <ul>
            <li><span
                style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">拥有可视化界面的项目版本控制软件，适用于git项目管理</span>
            </li>
            <li><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">window、mac可用</span></li>
          </ul>
          <h2><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">2. 获取项目代码</span></h2>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">1. 点击克隆/新建</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">&nbsp;<img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109085203869-379017851.png" alt=""
                class="medium-zoom-image"></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">2.
              在弹出框中输入项目地址，http或者ssh地址都可以</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109140217791-1586698899.png" alt=""></span></p>
          <p>&nbsp;</p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　如果箭头指向的仓库类型表明“这不是一个标准的Git仓库”，可能是有以下原因</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　　　1) 项目地址获取错误</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　　　2) 没有项目访问权限</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">3.
              点击“克隆”，等待项目克隆完成，完成后，左侧只有一个分支master</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109090353322-354908668.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　克隆完成后，得到的是发布后的master源码，如果想要获取最新的正在开发中的源码，需要对项目流进行初始化，点击“Git工作流”</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109090528994-685566929.png" alt=""
                class="medium-zoom-image"></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109090615400-737431825.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　直接点“确定”，获取develop分支源码</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109090719056-2130711032.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　开发任务都是在develop分支上完成的</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">4. 分支共有5种类型</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　1)
              master，最终发布版本，整个项目中有且只有一个</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　2)
              develop，项目的开发分支，原则上项目中有且只有一个</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　3) feature，功能分支，用于开发一个新的功能</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　4)
              release，预发布版本，介于develop和master之间的一个版本，主要用于测试</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　5)
              hotfix，修复补丁，用于修复master上的bug，直接作用于master</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">5.
              master和develop上文中已介绍过，当开发中需要增加一个新的功能时，可新建feature分支，用于增加新功能，并且不影响开发中的develop源码，当新功能增加完成后，完成feature分支，将新功能合并到develop中，更新develop上的代码</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">&nbsp; &nbsp; 1)
              新建feature。首先当前开发分支指向develop，点击“Git工作流”</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109091958588-558837626.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109091908260-379906698.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">选择“建立新的分支”</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109092139150-347914709.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">在预览中可看到，feature分支是从develop分出的，输入功能名称，点击确定，项目结构中增加feature分支，并且当前开发分支指向新建的feature分支</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109092354994-926356588.png" alt=""
                class="medium-zoom-image"></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　2)
              在F_add_feature分支下进行开发任务，并提交</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109093014463-1823777259.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">以上操作分别增加了feature_1、feature_2、feature_3文件，共提交3次，现项目文件夹下共三个文件</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109093143010-919012812.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">当切换为develop分支后，会发现，在develop下并没有新增的三个文件，说明在feature下进行操作，并不影响develop分支源码</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　3)
              完成feature开发后，将feature中的源码合并到develop分支。将当前分支指向F_add_feature分支，点击“Git工作流”，选择“完成功能”</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109093452978-1709211062.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109093514275-1775167695.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">预览中，表明feature分支将合并到develop，点击确定，进行提交合并，合并成功后</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109093636447-2094050690.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　4) 需要再增加新的功能时，重复以上操作即可</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">　　5)
              当多人协作开发时，可能会出现，不同人员对同一文件进行操作，从而引起合并冲突，对这种情况进行模拟，在当前新建两个feature，分别对feature_1文件进行修改，然后分别合并</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109094350088-888526871.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">feature_1在feature_1.txt下做如下操作</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109094443838-880041008.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">feature_2在feature_1.txt下做如下操作</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109100106635-831259442.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">先后合并F_feature_1和F_feature_2，会出现冲突</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109100313556-476820965.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">点击close，查看未提交的更改，提示feature_1.txt出现冲突，</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109100358869-1482700611.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">打开feature_1.txt</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109100529681-930447897.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">&nbsp;</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">&nbsp;</span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">&nbsp;出现&lt;&lt;&lt;&lt;&lt;&lt;&lt;
              HEAD、=======、&gt;&gt;&gt;&gt;&gt;&gt;&gt;
              feature/F_feature_2，HEAD和=号之间表示当前分支下的代码，=号和&gt;&gt;&gt;&gt;&gt;&gt;&gt;
              feature/F_feature_2之间表示要合并的分支下的代码，&gt;&gt;&gt;&gt;&gt;&gt;&gt; feature/F_feature_2表示了要合并的分支的分支名称，</span>
          </p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">根据情况区分要保留的代码，要删除的代码，最后再删除&lt;&lt;&lt;&lt;&lt;&lt;&lt;
              HEAD、=======、和&gt;&gt;&gt;&gt;&gt;&gt;&gt; feature/F_feature_2</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109100952338-190078150.png" alt=""></span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">将修改的代码再进行一次提交</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109101108322-1596654871.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">一旦出现feature合并冲突，要合并的feature分支不会被删除，如F_feature_2，确保合并没有问题后，可手动删除F_feature_2</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">6.
              当开发到一定阶段，可以发布测试版本时，可以从develop分支，建立release分支，进入预发布测试阶段。点击“Git工作流”，选择“建立新的发布版本”</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109131712931-768836924.png" alt="">　　<img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109131739541-592120046.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">预览中可以看到，release是从develop分出的，输入发布版本名‘R_v1.0’，点击确定</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109131916556-1163021502.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">R_v1.0为阶段性发布版本，主要用于发布前进行测试，后续的开发工作仍旧在develop上进行，如果在测试过程中发现问题，直接在release上进行修改，修改完成后进行提交</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">7.
              对release分支R_v1.0进行两次修改后，测试完成，可以进行正式发布，在当前分支指向R_v1.0分支下，点击“Git工作流”，选择“完成发布版本”</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109132509291-1687162251.png" alt="">&nbsp;<img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109132523791-1182055426.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">在预览中可以看到，R_v1.0向develop和master分别合并，点击确定，完成正式发布。</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109132707963-272919228.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">完成合并后，默认指向develop为当前分支，master增加多个版本更新，将master分支推送到origin，完成线上发布</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">8.
              正式版本发布后，develop可继续进行后续开发，当正式版本出现问题时，需要进行问题的修改，可以在master分支建立修改补丁hotfix。将当前分支切换到master，点击“Git工作流”，选择“建立新的修复补丁”</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109133243431-1745425468.png" alt="">&nbsp;&nbsp;<img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109133256681-446454863.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">预览中hotfix分支是从master拉去出来的，输入修复补丁名，点确定</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109133410088-230918294.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">在该分支下进行master的问题修改，修改完成后进行提交。当所有补丁问题修改完成后，点击“Git工作流”，选择“完成修复补丁”</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109133653994-1466239212.png" alt="">　　<img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109133722885-825457495.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">预览中，H_fix_1向master和develop分别合并，点击确定，完成分支合并。</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;"><img
                style="display: block; margin-left: auto; margin-right: auto"
                src="./SourceTree的基本使用_files/569926-20170109133905822-1312715.png" alt=""></span></p>
          <p><span
              style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">合并完成后，默认当前分支为develop，master分支有版本需要更新，当前分支切换为master，进行推送，完成补丁修复。</span>
          </p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">9.
              在完成发布版本和完成修复补丁时，如果遇到冲突，可仿照上述5进行冲突修改，再进行后续操作</span></p>
          <p><span style="font-size: 16px; font-family: &quot;Microsoft YaHei&quot;">&nbsp;</span></p>
        </div>
        <div id="MySignature" style="display: block;">如需转载请注明出处。http://www.cnblogs.com/tian-xie/</div>
        <div class="clear"></div>
        <div id="blog_post_info_block">
          <div id="BlogPostCategory">
            分类:
            <a href="https://www.cnblogs.com/tian-xie/category/935083.html" target="_blank">SourceTree</a></div>
          <div id="EntryTag">
            标签:
            <a href="https://www.cnblogs.com/tian-xie/tag/SourceTree/">SourceTree</a>, <a
              href="https://www.cnblogs.com/tian-xie/tag/%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6/">版本控制</a></div>

          <div id="blog_post_info">
        
          
     

            <script type="text/javascript">
              currentDiggType = 0;
            </script>
          </div>
          <div class="clear"></div>
         
        </div>
      </div>
   

  </div>
</body>

</html>